#!/bin/bash
#begin 切割日志————————————————————————————————————————
#获取当前时间 
log_year=$(date +"%Y") 
log_month=$(date +"%m") 
log_day=$(date +"%d") 
log_hour=$(date +"%H") 
#nginx日志路径 
logs_path="/home/admin/nginx/logs/" 
save_path="/home/admin/nginx/logs/logs_bak/$log_year$log_month$log_day/" 
#每天的日志放在单独的文件夹下，以日期命名,如果该文件夹不存在则创建该文件夹 
if [ ! -d ${save_path} ] 
then 
mkdir -p ${save_path} 
fi 
#log日志文件，并按日期命名 
mv ${logs_path}error.log ${save_path}error_${log_year}${log_month}${log_day}${log_hour}.log 
mv ${logs_path}access.log ${save_path}access_${log_year}${log_month}${log_day}${log_hour}.log 
#复制完毕后 清空 log 日志
cat /dev/null > ${logs_path}error.log
cat /dev/null > ${logs_path}access.log
#end 切割日志——————————————————————————————————————————————


#begin 清除5天前的日志——————————————————————————————————————
#设置清除的日志路径
clear_path="/home/admin/nginx/logs/logs_bak/" 
#设置延期天数
save_days=5 
#删除clear_path下时间大于save_days的文件
#delete ? days ago nginx log files
find ${clear_path}* -mtime +${save_days} -ls -exec rm -rf -d {} \;
#end  清除5天前的日志————————————————————————————————————————

#begin 添加定时任务——————————————————————————————————————————————
#cd /var/spool/cron/
#vim root
#* 0 * * * sh /home/admin/nginx/backup_nginx_log.sh
#service crond reload
#end 添加定时任务————————————————————————————————————————————————


# 要执行这个命令分三步：
# 1、先找出该目录下名字符合的文件；
# 2、过滤出指定时间内的文件；
# 3、执行删除命令。

# 1 找出指定条件的文件 - find 命令
# 比如找出当前目录下的所有txt文件

# find ./ -name '*.txt'
# 1
# 2 找出指定时间的文件
# 找出最后20分钟内访问的文件

# find ./ -name ‘*.txt’ -amin -20 -ls

# 找出最后1天内访问的文件

# find ./ -name ‘*.txt’ -atime -1 -ls

# 找出最后20分钟内内修改过的文件

# find ./ -name ‘*.txt’ -mmin -20 -ls

# 找出最后1天内修改过的文件

# find ./ -name ‘*.txt’ -mtime -1 -ls

# 找出最后20分钟内状态改变的文件

# find ./ -name ‘*.txt’ -cmin -20 -ls

# 找出最后2天内状态改变的文件

# find ./ -name ‘*.txt’ -ctime -2 -ls

# 以上是某时间之内的文件，那么某时间之前的呢？

# 找出20分钟之前访问的文件

# find ./ -name ‘*.txt’ -amin +20 -ls

# 找出最后1天前访问的文件

# find ./ -name ‘*.txt’ -atime +1 -ls

# 其他的就不一一列举了，大家只要知道 +n 表示n之前时间，,-n 表示 n之后时间, n 表示 n 时间

# 3 执行删除命令
#  -exec rm {} \;
# 1
# 那么，组合之后就是：

# find ./ -name '*.txt'  -amin -20 -ls  -exec rm {} \;
# 1
# 表示删除20分钟之内访问过的文件。
